package cn.edu.lzzy.dao;

import cn.edu.lzzy.entities.User;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.UUID;

@Repository
public interface UserRepository  extends JpaRepository<User, UUID> {
    User findUserByUserNameAndPassword(String userName,String password);//根据用户名/密码查找用户

    Integer countByUserName(String userName);//用户在db中的记录数

    Integer countAllBy();//获取用户数量

    List<User> findAllByOrderByUpdateTimeDesc();//获取用户并根据更新时间降序输出

    List<User> findAllByOrderByUpdateTimeDesc(Pageable pageable);//获取分页用户数据

    List<User>findUserByApplyTeacherOrderByUpdateTimeDesc(boolean applying);//查找教师数据


    /**
     *
     * 查询字段：用户账号、昵称、Email、联系电话
     */

     @Query("select u from User u where u.userName like CONCAT('%',:kw,'%') or u.nickName " +
             "like CONCAT('%',:kw,'%') or u.email like CONCAT('%',:kw,'%') or u.phone like CONCAT('%',:kw,'%')")
     List<User>  findByQuery(@Param("kw")String kw);//根据关键字（keyword）查找用户

     List<UserProjection>findUserByUserName(String user);//应用场景：用户登录
 }

